#ifndef QT_VECTOR2D_MANAGER
#define QT_VECTOR2D_MANAGER

#include <QWidget>
#include <qtpropertybrowser.h>
#include <QMap>
#include <QVector3D>

#include <qtpropertymanager.h>
class QtVector3DManager : public QtAbstractPropertyManager
{
    Q_OBJECT
public:
    QtVector3DManager(QObject *parent=0);
    virtual ~QtVector3DManager();

    QVector3D value(QtProperty* property_ptr);
    QtDoublePropertyManager * 	subDoublePropertyManager () const;


public slots:
    void setValue(QtProperty * property_ptr, const QVector3D &value_vector3d);
    void slotDoubleChanged(QtProperty *property, double value);
signals:
    void valueChanged(QtProperty*, const QVector3D&);
protected:
    virtual void initializeProperty (QtProperty *property);
    virtual QString	valueText (const QtProperty *property) const;
private:
    QtDoublePropertyManager * 	m_doublePropertyManager;
    QMap<const QtProperty *, QVector3D> m_propertyPtrToVector3D;
    QMap<const QtProperty *, double> m_propertyPtrToSingleStep;


    QMap< const QtProperty*, QtProperty * > m_propertyToX;
    QMap< const QtProperty*, QtProperty * > m_propertyToY;
    QMap< const QtProperty*, QtProperty * > m_propertyToZ;


    QMap< const QtProperty*, QtProperty * > m_XToproperty;
    QMap< const QtProperty*, QtProperty * > m_YToproperty;
    QMap< const QtProperty*, QtProperty * > m_ZToproperty;


    QMap< const QtProperty*, QtProperty * > m_propertyToSingleStep;
    QMap< const QtProperty*, QtProperty * > m_SingleStepToproperty;

};

#endif // QT_VECTOR2D_MANAGER
